package cn.sjx;

import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import cn.sjx.utils.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tio.core.udp.UdpClient;
import org.tio.core.udp.UdpClientConf;

/**
 * TIO服务类
 *
 * @Author: sjx
 * @Date: 2019年08月30日 0030 17:06:14
 */
public class TioUdpClient {

    private static final Log logger = LogFactory.get();

    /**
     * UdpClient对象
     */
    private UdpClient udpClient;

    /**
     * udp客户端配置
     */
    private UdpClientConf udpClientConf;

    /**
     * 默认构造方法
     */
    public TioUdpClient() {
        this("127.0.0.1", 9114);
    }

    /**
     * TIO-udp服务
     *
     * @param serverIp   服务器ip地址
     * @param serverPort 服务器端口
     */
    public TioUdpClient(String serverIp, int serverPort) {
        udpClientConf = new UdpClientConf(serverIp, serverPort, 5000);
        udpClient = new UdpClient(udpClientConf);
    }

    /**
     * 初始化Bean的时候执行的初始化方法
     */
    public void init() {
        try {
            // 启动Tio-udp服务
            udpClient.start();
            logger.info("");
            logger.info("=================================");
            logger.info("======> 【地磁|监听|启动】UDP客户端启动成功，服务器 IP:端口 = {}", udpClientConf.getServerNode());
            logger.info("=================================");
            logger.info("");
        } catch (Exception e) {
            logger.info("======> 【地磁|监听|启动】UDP客户端启动失败：{}", e.getMessage());
        }
    }

    public UdpClient getUdpClient() {
        return udpClient;
    }
}